﻿using Microsoft.Win32;

namespace SpriteAnimator.Classes
{
    /// <summary>
    /// Classe utilitaire
    /// </summary>
    public static class Utils
    {
        #region Constante

        public const string REGISTRY_KEY = @"Software\CodePlex\Sprite Animator";

        #endregion

        #region Fonctions statiques publiques

        /// <summary>
        /// Va chercher la valeur d'un clé registre
        /// </summary>
        /// <param name="p_sName">Nom de la clé</param>
        /// <param name="p_sDefaut">Valeur pas défaut si non trouvé</param>
        /// <returns>Valeur clé, défaut sinon</returns>
        public static string GetRegistryValue(string p_sName, string p_sDefaut, string p_sKey)
        {
            RegistryKey oKey;

            oKey = Registry.CurrentUser.OpenSubKey(p_sKey);

            if ( oKey != null )
                return (oKey.GetValue(p_sName, p_sDefaut).ToString());

            return (p_sDefaut);
        }

        /// <summary>
        /// Affecte la valeur d'un clé registre
        /// </summary>
        /// <param name="p_sName">Nom de la clé</param>
        /// <param name="p_sDefaut">Valeur à y écrire</param>
        /// <returns>TRUE réussi, FALSE sinon</returns>
        public static void SetRegistryValue(string p_sName, string p_sValue, string p_sKey)
        {
            RegistryKey oKey;

            oKey = Registry.CurrentUser.OpenSubKey(p_sKey, true);

            if ( oKey != null )
                oKey.SetValue(p_sName, p_sValue);
            else
            {
                Registry.CurrentUser.CreateSubKey(p_sKey);
                oKey = Registry.CurrentUser.OpenSubKey(p_sKey, true);

                if ( oKey != null )
                    oKey.SetValue(p_sName, p_sValue);
            }
        }

        #endregion
    }
}
